/**
 * 
 */
package ec.gob.magap.era.servicios.impl;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import javax.ejb.Stateless;

import ec.gob.magap.era.dao.impl.CoordinadorDaoImpl;
import ec.gob.magap.era.entidades.Resultado;
import ec.gob.magap.era.entities.Usuario;
import ec.gob.magap.era.exceptions.ServicioException;
import ec.gob.magap.era.servicios.interfaces.CoordinadorServicio;


/**
 * @author Javier
 *
 */
@Stateless(name= "CoordinadorServicio")
public class CoordinadorServicioImpl implements CoordinadorServicio {

	/* (non-Javadoc)
	 * @see ec.gob.magap.era.servicios.interfaces.CoordinadorServicio#consultarUsuarios(ec.gob.magap.era.entities.Usuario)
	 */
	@Override
	public List<Usuario> consultarUsuarios(Usuario usuarioLogueado)
			throws ServicioException {
		List<Usuario> lista = null;
		try
		{
			CoordinadorDaoImpl coordinadorDao = new CoordinadorDaoImpl();
			if (usuarioLogueado.getEsadministradornacional().intValue()==1){
			
				lista = coordinadorDao.obtenerAdministradoresZonales();
				lista.addAll(coordinadorDao.obtenerAdministradoresProvinciales());
				lista.addAll(coordinadorDao.obtenerFacilitadores());
				
			}
			if (usuarioLogueado.getEsreponsablezonal().intValue()==1){
				
				lista = coordinadorDao.obtenerAdministradoresProvinciales();
				lista.addAll(coordinadorDao.obtenerFacilitadores());
			}
			if (usuarioLogueado.getEsresponsableprovincial().intValue()==1){
				
				lista =coordinadorDao.obtenerFacilitadores();
			}
			
			if (usuarioLogueado.getEsfacilitaor().intValue()==1){
				
				lista = new ArrayList<Usuario>();
				lista.add(coordinadorDao.obtenerUsuarioporId(usuarioLogueado.getId()));
			}
			if (usuarioLogueado.getEsadministradornacional().intValue()==1){
				
				lista = coordinadorDao.obtenerAdministradoresNacionales();
				lista.addAll(coordinadorDao.obtenerAdministradoresZonales());
				lista.addAll(coordinadorDao.obtenerAdministradoresProvinciales());
				lista.addAll(coordinadorDao.obtenerFacilitadores());
			}
			
		}catch(Exception ex){
			
		}
		return lista;
	}

	/* (non-Javadoc)
	 * @see ec.gob.magap.era.servicios.interfaces.CoordinadorServicio#consultarUsuario(int)
	 */
	@Override
	public Usuario consultarUsuario(BigDecimal idUsuario) throws ServicioException {
		Usuario usuario = null;
		try
		{
			CoordinadorDaoImpl coordinadorDao = new CoordinadorDaoImpl();
			usuario = coordinadorDao.obtenerUsuarioporId(idUsuario);
		}catch(Exception ex){
		}
		return usuario;
	}

	/* (non-Javadoc)
	 * @see ec.gob.magap.era.servicios.interfaces.CoordinadorServicio#guardarUsuario(ec.gob.magap.era.entities.Usuario, java.lang.String)
	 */
	@Override
	public Resultado guardarUsuario(Usuario usuario, String operacion)
			throws ServicioException {
		Resultado resultado  = new Resultado();
		resultado.setEstado(true);
		resultado.setMensaje(ec.gob.magap.era.general.Constantes.OK);
		
		try
		{
			CoordinadorDaoImpl coordinadorDao = new CoordinadorDaoImpl();
			coordinadorDao.guardarUsuario(usuario, operacion);
			
		}catch(Exception e){
			
			resultado.setEstado(false);
			resultado.setMensaje("Ha ocurrido un error al guardar el Coordinador: " + e.getMessage()  );
		}
		return resultado;
	}

}
